package app.fichajes.cacheo;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.graphics.drawable.Drawable;
import android.util.Log;
import app.fichajes.constants.Constants;
import app.fichajes.data.Equipo;
import app.fichajes.data.Fichaje;
import app.fichajes.data.News;
import app.fichajes.data.parser.FacadeEquipos;
import app.fichajes.data.parser.FacadeFichajes;
import app.fichajes.data.parser.FacadeNoticiasRSSLaSexta;
import app.fichajes.main.R;
import app.fichajes.utils.ImagenDeUrl;
import app.fichajes.utils.StringUtils;

import com.gi.libraryutility.main.ActivityUtility;

public class FichajesData {
	
	private static FacadeEquipos facadeEquipos;
	private static FacadeFichajes facadeFichajes;
	private static FacadeNoticiasRSSLaSexta facadeNoticias;
	
	public static Map<String, Drawable> mapImgEscudos;
	public static Map<String, Drawable> mapFotosJugador;
	
	private static List<News> listaNoticias;
	
	public static void init(){
		
		facadeEquipos = new FacadeEquipos(Constants.URL_EQUIPOS);
		facadeFichajes = new FacadeFichajes(Constants.URL_FICHAJES);
		
		mapImgEscudos = new HashMap<String, Drawable>();
		mapFotosJugador = new HashMap<String, Drawable>();
		
		try {
			facadeEquipos.parse();
			facadeFichajes.parse();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	public static void initNoticias(){
		try {
			facadeNoticias = new FacadeNoticiasRSSLaSexta(Constants.URL_RSS_LASEXTA);
		} catch (Exception e) {
			Log.d("FichajesData"," ¡¡news fail!! ");
		}
	}
	
	/** Esta lista contiene todos los equipos de liga BBVA temporada 2011/12
	 * con sus escudos de assets (drawables).
	 * Se usa para rellenar el grid de equipos y ya luego ... para lo que quieras :D
	 */
	public static List<Equipo> getListEquiposBBVA(){
		return facadeEquipos.getListEquiposBBVA();
	}
	
	public static Map<String, Equipo> getMapEquiposBBVA(){
		return facadeEquipos.getMapEquiposBBVA();
	}
	
	public static List<Fichaje> getListFichajesPortada(){
		return facadeFichajes.getListaFichajesPortada();
	}
	
	
	public static void escudoFromAssets(String nombreEquipo){
		
		String equipo = StringUtils.transformaString(nombreEquipo);
		Drawable resul = ActivityUtility.getActivityActual().getResources().getDrawable(R.drawable.escudo_generico);
		
		try {
			resul = Drawable.createFromStream(ActivityUtility.getActivityActual().getAssets().open(Constants.PATH_ESCUDOS + equipo + ".png"), equipo);
			Log.d("FichajesData","Escudo ok: "+equipo);
		} 
		catch (IOException e) {
			Log.d("FichajesData","El escudo no está en assets, hay que descargarlo "+equipo);
			
			String url = Constants.URL_ESCUDOS + equipo + ".png";
			resul = ImagenDeUrl.obtenerImagen(url, true);
			
			e.printStackTrace();
		}
		
		mapImgEscudos.put(nombreEquipo, resul);
	}
	
	
	public static List<News> getListaNoticias(){
		if(facadeNoticias.getNoticias().size() != 0)
			listaNoticias = facadeNoticias.getNoticias();
		
		return listaNoticias;
	}

}
